Last Updated: June 2, 1996
This documentation is for release 1.0a7 (Alpha 7)
Please check the OmniHTTPd
Home Page for updates and new releases.
OmniHTTPd is a powerful all-purpose industry compliant WWW server for Windows 95. It is designed to use the Winsock TCP/IP interface to server web documents over any type of Internet connection. Best of all, OmniHTTPd is free. Why spend thousands of dollars on a Unix or NT system and web software when you can use OmniHTTPd with Windows 95?
The server complies with the industry standard HTTP/1.0 specification meaning maximum compatibility with all currently available browsers. Future versions of the server will also be compliant with the new HTTP/1.1 specifications, making it the most advanced server available for the Windows 95 platform. Some of the features of this new specification are already enabled in the current release.
For maximum performance, OmniHTTPd is both 32-bit and multi-threaded. OmniHTTPd is also designed with the computer hobbyist in mind. While powerful enough to serve over 20GB/day, the daemon is compact and easy to maintain, making it the ideal choice for the novice web master.
OmniHTTPd is currently under development; as a result, the alpha version being distributed is unfinished. OmniHTTPd will be going into beta very soon.
This software is Copyright © 1995, 1996 Omnicron Software Solutions. All rights reserved.
By using this test version of OmniHTTPd you are consenting to be bound by agreement to the following:
GRANT OF LICENSE
Omnicron Software Solutions (the "Company") has granted you,
the user, a limited license to test OmniHTTPd (the "Software")
This does NOT give you the license to modify, translate, reverse engineer,
decompile, disassemble (except to the extent applicable laws specifically
prohibit such restriction), or create derivative works based on the Software.
DISCLAIMER
Since the Software is provided free of charge, Omnicron Software Solutions (the "Company") shall not be held responsible for any damages arising from the use of the Software. The Software is provided on an AS IS basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose and non-infringement. The entire risk as to the quality and performance of the Software is borne by you. Should the Software prove defective, you and not the Company, assume the entire cost of any service and repair.
Security mechanisms implemented in the Software have its limitations and you, the user, must decide whether the Software sufficiently meets your requirements.
If the release you have is not self-extracting/installing, copy the distribution .ZIP file into a directory and unzip the files using the -d option so that PKUNZIP creates the proper directories for you. If you are using WinZip, make sure that you check the "Use Directory Names" option.
Installation is easiest if you use the directory C:\HTTPD as your root as all the default settings point to this directory.
Note that 'Primary' is the default configuration. To create and use other configurations, simply run the server with the configuration name as a command line parameter. Note that multiple copies of the server can run as long as each copy uses different network ports and log files.
To configure the server, run ADMIN.EXE. The default configuration is Primary. You can create additional configurations by pressing New.
Port Number
This is the port number that the server will use for HTTP. The default is 80.
Timeouts
These are the timeout values in milliseconds. If you are serving over a slow connection, you may want to increase these values. PPP users should use at least 60000. The CGI script time out is the time a CGI script is allowed to take before being shutdown. A value of 0 means to wait indefinitely.
Keep Alive
This option enables persistent HTTP support as outlined in HTTP/1.1. Note that Netscape 2.0x's support for Keep-Alive connections is mildy retarded and will hang frequently on transparent .GIF files for reasons unknown.
Site Address
Set this to your site address.
Example: glau.student.harvard.edu
Server Root
Set this to the root of your documents. This will be the virtual root
directory.
Example: c:\httpd\htdocs
Default Index
This is the name of the default file for the server to look for if a
directory is specified.
Example: index.html
Email Address
This is the email address that appears on things like error messages
and statistics pages.
Example: glau@fas.harvard.edu
Server Priority
Use this option to tell the server how much CPU priority you want to give it. If you are using a Netscape browser to view your own pages on the same machine, the priority level must be at least High.
Enable DNS Reverse
Enable this option if you want the server to perform a DNS lookup for each request. Use this option with care if you are running a busy server. Many PPP users do not have resolvable addresses and may experience delays when accessing your site.
Send Version Information
Enabling this option will cause your server version number to be sent with each request. It is on by default. If security is a concern, turning this off will suppress the version number.
Access Log
This is the main log and it is compatible with the Extended Common Log format.
Error Log
This log keeps track of all errors that occur with the server.
Trace Log
This log is for debugging purposes only. You can use this log to track CGI launches.
Referrer Log
This log keeps track of referrals that are not from your own site.
Alias
This is a list of all standard document aliases. Standard aliases dominate all other types of directory mapping.
Redirections
This is a list of all redirection entries.
Standard CGI
Resources in this type of mapping will be launched standard CGI style.
Windows CGI
Resources in this type of mapping will be launched Windows CGI style.
MIME
This is the list of types associations that the server uses to determine what Content-Type header to send in the response. Note that there can only be one type for every extension but multiple extensions may exist for each type.
Auto-indexing
Auto-indexing generates an index if a directory is specificied and no default file can be found. If security is a concern, you may want to disable this option.
Table indexing
Table indexing is easier to read but requires that the user's browser support HTML 3.0
Just what the name implies. Don't touch these unless you know what you are doing.
To run the server, run OHTTPD.EXE. Running the program with no parameters will cause the "Primary" configuration to be loaded.
To use a different configuration, supply a name as a command line parameter. For example, the command line:
OHTTPD Port96
will force the server to use a previously set configuration called Port96.
The server will start in the background and an icon will be placed into the system tray. You can click on the icon to call up a status window. You can also right click on the icon to bring up a menu. Closing the status window does not shut down the server; it must be done from the menu.
OmniHTTPd has the ability to run both Standard CGI and Windows CGI scripts. Scripts must be placed in their respective directories so that the server can determine how to correctly execute the script. Use the administration tool to define these directories. Do not alias to these directories as an alias definition will override a CGI directory definition.
In addition, scripts must be placed in the base of the CGI directory. For example, if you have /cgi-bin defined as c:\httpd\cgi-bin, scripts must be placed in c:\httpd\cgi-bin. You cannot put them in a child directory like c:\httpd\cgi-bin\child\dir. This, however, does not prevent scripts from storing their own information in child directories.
This restriction allows OmniHTTPd to efficiently parse path information without the access overhead of attempting each possible path.
If you get errors when launching standard CGI scripts or not all environment variable are present, you are running out of DOS environment space. To fix this, add the following lines to your SYSTEM.INI:
[NonWindowsApp] CommandEnvSize=8192
OmniHTTPd supports the use of Perl for developing Standard CGI scripts. You must have a Perl interpreter, such as Perl for Win32, installed to use Perl. In keeping with the standard convention, Perl scripts must end in the extension .pl and must be placed in a standard CGI directory. Output from Perl scripts are treated the same as regular CGI scripts.
Server side includes (SSI) allows the insertion of dynamic data into .html documents. OmniHTTPd does all of its SSI processing in-memory and sends the correct Content-Length header value. There is no support for the #exec command in this release. Otherwise, we believe the SSI implementation in OmniHTTPd to be complete. The next generation SSI+ specifications are being reviewed at this time and it is doubtful whether a complete implementation of SSI+ will be included in future releases of OmniHTTPd.
Known problem: When specifying files for includes or last modified dates, you must specify the entire local URL. For example, you must use "/dir/test.html" and not "test.html" if the current directory is /dir/.
My scripts always return blank documents or weird content types. Am I doing something wrong?
Make sure that your scripts are being placed in CGI directories and not alias directories. If you are using Perl, make sure your Perl scripts are in a standard CGI directory and have a .pl extension. Also make sure that your scripts return a Content-Type. OmniHTTPd will not automatically append a text/plain type to content-typeless entities.
Server side includes aren't working!
Make sure you rename the extension of the files that you want parsed to .shtml. Also make sure you have updated the MIME types in the administration program.
What are all those OMN?????.TMP files doing in my temporary directory?
These files are usually a result of unsuccessful CGI launches. It could be a problem with your CGI script. You can safely delete these files if the server is not running.
My setup is all messed up, how can delete it and go back to the defaults?
Using the administration program, select the offending configuration and press the Reset button.
Why does the server say it can't bind the socket or open the log files?
Check to make sure that another copy of the server isn't running. Make sure your TCP settings are correct. Make sure that you are using a Winsock compliant TCP socket interface.
How come connections remain open even though the client has finished transferring information?
The connection is probably in Keep-Alive mode and will stay open for the Keep-Alive amount of time before closing. By reusing the connection for subsequent requests, the overhead of tearing down and building separate connections is eliminated. Microsoft's Internet Explorer supports Keep-Alive connections. Netscape's support for Keep-Alive connections is mildy retarded and will hang frequently on transparent .GIF files for reasons unknown.
My local redirections don't work. I can't use http://site.com/foo, I always need to type http://site.com/foo/ How do I fix this?
Make sure that the site address is set properly in the configuration. OmniHTTPd needs this to be set correctly so that it can tell the browser the correct place to look for the redirection.